import java.lang.*;
/**
 * 二叉树的最大深度
 * 
 * 描述

求给定二叉树的最大深度，
深度是指树的根节点到任一叶子节点路径上节点的数量。
最大深度是所有叶子节点的深度的最大值。
（注：叶子节点是指没有子节点的节点。）


数据范围：
0
≤
n
≤
100000
0≤n≤100000，树上每个节点的val满足 
∣
v
a
l
∣
≤
100
∣val∣≤100
要求： 空间复杂度 
O
(
1
)
O(1),时间复杂度 
O
(
n
)
O(n)
 */
public class 二叉树的最大深度 {
    
    public static void main(String[] args) {
        
        TreeNode root = new TreeNode(1);
        root.left = new TreeNode(2);

        System.out.println(maxDepth(root));

    }

    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @return int整型
     */
    public static int maxDepth (TreeNode root) {
        // write code here

        if(null == root) return 0;
        if(null == root.left && null == root.right) return 1;



        return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
    }
}
